import axios from 'axios'
import { message } from 'antd';


axios.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8';

// 请求拦截器
axios.interceptors.request.use(
  config => {
    // 每次发送请求之前判断vuex中是否存在token
    // 如果存在，则统一在http请求的header都加上token，这样后台根据token判断你的登录情况
    // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断
    const token = localStorage.getItem("token");
    token && (config.headers.common['SysUser-Token'] = token);
    return config;
  },
  error => {
    return Promise.error(error);
  }
);
// 1.优化统一请求异常
export default function ajax(url, data = {}, type = 'GET') {
    return new Promise((resolve, reject) => {
        let promise;
        // 1. 执行异步ajax请求
        if (type === "GET") {
            promise = axios.get(url, { params: data })
        } else if (type === "POST") {
            promise = axios.post(url, data)
        } 

        // 2. 成功
        promise.then(res => {
            resolve(res)
        }).catch(error => {
            // rejext(error)
            message.error("请求出错", error.message)
        })
    })
}